package structure.flyweight;

/**
 * 享元模式
 * 主要用于减少创建对象的数量，以减少内存占用和提高性能。
 * 它提供了减少对象数量从而改善应用所需的对象结构的方式。
 * <p>
 * 享元模式尝试重用现有的同类对象，如果未找到匹配的对象，则创建新对象
 * 在有大量对象时，有可能会造成内存溢出，把其中共同的部分抽象出来，
 * 如果有相同的业务请求，直接返回在内存中已有的对象，避免重新创建。
 *
 * @author yeyangtao
 * @date 2020/6/23 16:43
 */
public class Demo {
    public static void main(String[] args) {
        String red = "red";
        String blue = "blue";
        Circle circle = (Circle) ShapeFactory.getCircle(red);
        circle.setColor(red);
        circle.setRadius(5);
        circle.setX(1);
        circle.setY(1);
        circle.draw();

        Circle circle1 = (Circle) ShapeFactory.getCircle(red);
        circle1.draw();
    }
}
